## Contents

*   [1 Введение](#.D0.92.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5)
*   [2 Установка](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0)
    *   [2.1 Установка Arch Linux на LVM](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_Arch_Linux_.D0.BD.D0.B0_LVM)
    *   [2.2 Разметка дисков](#.D0.A0.D0.B0.D0.B7.D0.BC.D0.B5.D1.82.D0.BA.D0.B0_.D0.B4.D0.B8.D1.81.D0.BA.D0.BE.D0.B2)
    *   [2.3 Создание физических томов(PV)](#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D1.84.D0.B8.D0.B7.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D1.85_.D1.82.D0.BE.D0.BC.D0.BE.D0.B2.28PV.29)
    *   [2.4 Создание группы логических томов](#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B3.D1.80.D1.83.D0.BF.D0.BF.D1.8B_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D1.85_.D1.82.D0.BE.D0.BC.D0.BE.D0.B2)
    *   [2.5 Создание логических томов](#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D1.85_.D1.82.D0.BE.D0.BC.D0.BE.D0.B2)
    *   [2.6 Создание файловых систем и их монтирование](#.D0.A1.D0.BE.D0.B7.D0.B4.D0.B0.D0.BD.D0.B8.D0.B5_.D1.84.D0.B0.D0.B9.D0.BB.D0.BE.D0.B2.D1.8B.D1.85_.D1.81.D0.B8.D1.81.D1.82.D0.B5.D0.BC_.D0.B8_.D0.B8.D1.85_.D0.BC.D0.BE.D0.BD.D1.82.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5)
    *   [2.7 Важно](#.D0.92.D0.B0.D0.B6.D0.BD.D0.BE)
*   [3 Настройка](#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0)
    *   [3.1 Увеличение размера логического тома](#.D0.A3.D0.B2.D0.B5.D0.BB.D0.B8.D1.87.D0.B5.D0.BD.D0.B8.D0.B5_.D1.80.D0.B0.D0.B7.D0.BC.D0.B5.D1.80.D0.B0_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.BE.D0.B3.D0.BE_.D1.82.D0.BE.D0.BC.D0.B0)
    *   [3.2 Уменьшение размера логического тома](#.D0.A3.D0.BC.D0.B5.D0.BD.D1.8C.D1.88.D0.B5.D0.BD.D0.B8.D0.B5_.D1.80.D0.B0.D0.B7.D0.BC.D0.B5.D1.80.D0.B0_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.BE.D0.B3.D0.BE_.D1.82.D0.BE.D0.BC.D0.B0)
    *   [3.3 Добавить раздел к логической группе](#.D0.94.D0.BE.D0.B1.D0.B0.D0.B2.D0.B8.D1.82.D1.8C_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB_.D0.BA_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.BE.D0.B9_.D0.B3.D1.80.D1.83.D0.BF.D0.BF.D0.B5)
    *   [3.4 Удаление раздела из логической группы](#.D0.A3.D0.B4.D0.B0.D0.BB.D0.B5.D0.BD.D0.B8.D0.B5_.D1.80.D0.B0.D0.B7.D0.B4.D0.B5.D0.BB.D0.B0_.D0.B8.D0.B7_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.BE.D0.B9_.D0.B3.D1.80.D1.83.D0.BF.D0.BF.D1.8B)
    *   [3.5 Клонирование](#.D0.9A.D0.BB.D0.BE.D0.BD.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5)
        *   [3.5.1 Введение](#.D0.92.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5_2)
        *   [3.5.2 Настрйка](#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.B9.D0.BA.D0.B0)
*   [4 Решение проблем](#.D0.A0.D0.B5.D1.88.D0.B5.D0.BD.D0.B8.D0.B5_.D0.BF.D1.80.D0.BE.D0.B1.D0.BB.D0.B5.D0.BC)
    *   [4.1 LVM команды не работают](#LVM_.D0.BA.D0.BE.D0.BC.D0.B0.D0.BD.D0.B4.D1.8B_.D0.BD.D0.B5_.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.B0.D1.8E.D1.82)
    *   [4.2 Не видно логические тома](#.D0.9D.D0.B5_.D0.B2.D0.B8.D0.B4.D0.BD.D0.BE_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5_.D1.82.D0.BE.D0.BC.D0.B0)
*   [5 Ещё по теме](#.D0.95.D1.89.D1.91_.D0.BF.D0.BE_.D1.82.D0.B5.D0.BC.D0.B5)

# Введение

Менеджер логических томов (англ. Logical Volume Manager) — менеджер логических томов. В отличие от разделов жёсткого диска, размеры логических томов можно легко менять.

Устройство LVM:

*   **Физический том(англ. physical volume)**: Раздел на жёстком диске или жёсткий диск на котором создаются логические тома.
*   **Группа томов (англ. volume group)**: Набор физических томов в один объект. Содержат логические тома.Группу томов можно представить как жёсткие диски.
*   **Логический том (англ. logical volume)**: аналогичен разделу (hda1, sdа1) на не-LVM системах. Так же, как и на них, представляется как блочное устройство и может нести файловую систему.
*   **Физический диапазон (англ. physical extent)** : Небольшая часть диска(обычно имеет размер 4MB), которая может быть добавлена к логическому тому. Может быть добавлен к любому разделу.
*   **Логические диапазоны (англ. logical extent)**: диапазоны, на которые разбивается логический том. Их объём одинаков по всей группе томов.

Преимущества LVM:

*   использование любого количества жёстких дисков или их разделов как один большой раздел.
*   логические тома могут быть "размазаны" на несколько жёстких дисков. Максимальный размер равен объёму всех жёстких дисков.
*   изменение/создание/удаление логических томов в любом виде. То есть не зависит от физического расположения тома.
*   изменение/создание/удаление логических томов и групп томов в режиме "online"(Внимание: не все файловые системы, поддерживают изменение размере в режиме "online")
*   Снапшоты позволяют создавать резервную копию замороженной файловой системы практически на лету.
*   Поддержка устройств для различных целей, включая прозрачное шифрование файловой системы и кэширования часто используемых данных.
*   динамическое увеличение размера логических томов по мере их наполнения. Увеличение размера производится пользователем, некоторые файловые системы поддерживают изменение размера в режиме "online".

Недостатки :

*   Только Linux-совместимый . Отсутствие официальной поддержки в большинстве других ОС(FreeBSD, Windows..).
*   Дополнительные шаги в более сложной настройке системы

Пример:

```
**Жёсткий диск**

  Disk1 (/dev/sda):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    |Partition1 50GB (Physical volume) |Partition2 80GB (Physical volume)     |
    |/dev/sda1                         |/dev/sda2                             |
    |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |

  Disk2 (/dev/sdb):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    |Partition1 120GB (Physical volume)                 |
    |/dev/sdb1                                          |
    | _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _|

```

```
**Логические тома**

  Volume Group1 (/dev/MyStorage/ = /dev/sda1 + /dev/sda2 + /dev/sdb1):
     _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    |Logical volume1 15GB  |Logical volume2 35GB      |Logical volume3 200GB               |
    |/dev/MyStorage/rootvol|/dev/MyStorage/homevol    |/dev/MyStorage/mediavol             |
    |_ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |

```

В сумме получается: объединение всего доступного места в одну группу томов(LV) и более гибкий контроль над разделами(логическими томами)

# Установка

Перед началом установки нужно загрузить модуль ядра:

```
# modprobe dm-mod

```

Если вы уже установили Arch Linux и хотите попробовать LVM в действии, перейдите сразу к [partition disks](/index.php/LVM#Partition_disks "LVM").

#### Установка Arch Linux на LVM

Перед запуском /arch/setup нужно разметить жёсткий диск. Например с помощью `cfdisk`. Загрузчик grub версии ниже 1.0 не поддерживает загрузку с томов LVM, поэтому раздел `/boot` должен быть расположен на загрузочном разделе(100МБ должно хватить) либо используйте lilo или grub версии 1.95 и выше.

#### Разметка дисков

Для начала нужно создать раздел для LVM. Тип файловой системы должен быть 'Linux LVM' поэтому при разметке используйте id 0x8e (тип файловой системы: 8e). Для работы LVM требует наличие одного раздела типа 'Linux LVM' на каждом жёстком диске, который вы хотите использовать с LVM. Логические тома находятся внутри этих разделов, поэтому задайте им соответствующий размер. Если вы предполагаете не создавать других разделов на этих дисках - используйте всё доступное место на каждом диске.

**Важно:** /boot не может находиться внутри LVM раздела т.к. grub (версии<1.95) не имеет поддержки загрузки с LVM.

**Tip:** Все разделы LVM на всех дисках могут быть представлены в виде одного большого диска.

#### Создание физических томов(PV)

Произведите инициализацию разделов чтобы LVM мог использовать их. Используйте `fdisk -l` чтобы найти разделы с файловой системой 'Linux LVM' и создайте в них физические тома:

```
# pvcreate /dev/sda2

```

Замените `/dev/sda2` на имена разделов на вашей системе. Эта команда поместит заголовок на каждый раздел. Теперь он может быть использован LVM. Отобразить все разделы, которые LVM может использовать, можно с помощью:

```
# pvdisplay

```

#### Создание группы логических томов

Следующий шаг - это создание логических томов внутри физических томов. Выполните следующую команду на каждом физическом томе:

```
# vgcreate VolGroup00 /dev/sda2
# vgextend VolGroup00 /dev/sdb1

```

Метку "VolGroup00" можно заменить на любую другую. Отобразить все доступные логические тома можно с помощью:

```
# vgdisplay

```

**Примечание:** Можно создать несколько логических групп, но тогда они будут видны в системе в виде нескольких дисков.

#### Создание логических томов

Теперь нужно создать логические тома внутри группы томов. Следующая команда создаст логический том внутри "VolGroup00" с размером 10GB и меткой "lvolhome"

```
# lvcreate -L 10G VolGroup00 -n lvolhome

```

Этот том будет доступен позже как устойство `/dev/mapper/Volgroup00-lvolhome` или `/dev/VolGroup00/lvolhome`. Как и в случае в логическими томами, метка логического тома может быть выбрана на ваше усмотрение.

Чтобы создать раздел swap внутри тома, нужен дополнительный параметр:

```
# lvcreate -C y -L 10G VolGroup00 -n lvolswap

```

`-C y` создаст монолитный раздел, то есть раздел swap будет создан на одном диске и не будет "размазан" на несколько устройств или физических расширений.

Если вы хотите использовать всё оставшееся свободное место внутри группы томов, выполните:

```
# lvcreate -l +100%FREE VolGroup00 -n lvolmedia

```

Логические тома можно отобразить командой:

```
# lvdisplay

```

**Примечание:** возможно потребуется загрузка модуля ядра (**modprobe dm-mod**)

**Tip:** Для начала можно создать относительно небольшие тома и позже по мере надобности их расширить. Оставьте свободное место внутри группы томов, чтобы было место для последующего увеличения разделов.

#### Создание файловых систем и их монтирование

Ваши логические тома должны быть доступны по следующему пути: `/dev/mapper/` и `/dev/YourVolumeGroupName`. Если их там нет, загрузите модуль ядра и сделайте группы доступными:

```
# modprobe dm-mod
# vgchange -ay

```

Теперь можно создать файловые системы внутри логических томов и смонтировать их как обычные разделы.Если вы устанавливаете Arch Linux, пропустите этот шаг и используйте программу установки для выбора LVM разделов, которые вы создали.

```
# mkfs.ext3 /dev/mapper/VolGroup00-lvolhome
# mount /dev/mapper/VolGroup00-lvolhome /home

```

Если вы устанавливаете Arch Linux, выполните /arch/setup, перейдите к *Prepare Hard Drive* далее сразу выберите *Set Filesystem Mountpoints* и ***прочтите абзац [Важно](/index.php/LVM#.D0.92.D0.B0.D0.B6.D0.BD.D0.BE "LVM") перед тем как продолжить!***

### Важно

Осталось всего несколько шагов, будьте внимательны при использовании/установке Arch Linux на LVM(в скобках указаны соответствующие меню во время установки):

1.  Во время выбора точек монтирования выберете только что созданные логические тома(используйте: `/dev/mapper/Volgroup00-lvolhome`).
    НЕ выбирайте физические разделы на которых были созданы логические тома(не используйте: `/dev/sda2`). (*Set Filesystem Mountpoints*)
2.  Убедитесь, что вы заменили *USELVM="no"* на *USELVM="yes"*
3.  Убедитесь, что *lvm2* находится в секции HOOKS в `/etc/mkinitcpio.conf` непосредственно перед *filesystems*, для того чтобы ядро смогло найти LVM во

время загрузки. Если вы хотите использовать LVM образы(англ. snapshots) добавьте *dm-snapshot* к переменной MODULES (*Configure System*)

1.  Убедитесь, что в `/boot/grub/menu.lst` указаны правильные тома для раздела /root.(*Install Bootloader*)

Пример `/boot/grub/menu.lst`

```
...
# (0) Arch Linux
title  Arch Linux
root   (hd0,0)
kernel /vmlinuz26 **root=/dev/mapper/VolGroup00-lvolroot** resume=/dev/mapper/VolGroup00-lvolswap ro
initrd /kernel26.img
...

```

If you are using LILO check `/etc/lilo.conf`:

```
image=/boot/vmlinuz26
       label=arch
       append="**root=/dev/mapper/VolGroup00-lvolroot** resume=/dev/mapper/VolGroup00-lvolswap ro"
       initrd=/boot/kernel26.img

```

# Настройка

## Увеличение размера логического тома

Для этого нужно увеличить сам том и затем размер файловой системы на нём. Представим, что у нас есть логический том размером 15Гб с ext3 на нём. Увеличим его размер до 20Гб:

```
# lvextend -L 20G VolGroup00/lvolhome (или lvresize -L +5G VolGroup00/lvolhome)
# resize2fs /dev/VolGroup00/lvolhome

```

Вы можете использовать `lvresize` вместо `lvextend`.

Если вы хотите заполнить всё свободное место в группе томов:

```
# lvextend -l +100%FREE VolGroup00/lvolhome

```

**Важно:** Не все файловые системы поддерживают изменение раздела в режиме "online" без потери данных.

**Примечание:** Если вы не увеличите размер файловой системы, вы не сможете использовать свободное место добавленное к логическому тому.

## Уменьшение размера логического тома

Скорее всего размер файловой системы такой-же как и логического тома, поэтому сначала нужно уменьшить её размет и только потом уменьшать размер тома. Дальнейшие действия зависят от типа файловой системы, возможно вам нужно отмонтировать её. Для логического тома размером 15ГБ и ext3 уменьшение размера до 10ГБ выглядит следующим образом:

```
# resize2fs /dev/VolGroup00/lvolhome 9G
# lvreduce -L 10G VolGroup00/lvolhome (или lvresize -L -5G VolGroup00/lvolhome)
# resize2fs /dev/VolGroup00/lvolhome

```

В данном случае мы уменьшили размер файловой системы до 9Гб чтобы при уменьшении размера логического тома, случайно, не потерять данные в конце файловой системы. После этого размер файловой системы можно увеличить. Вы можете использовать `lvresize` вместо `lvreduce`.

**Важно:** Не уменьшайте размер файловой системы, до размера меньшего чем объём данных на ней, иначе вы рискуете потерять данные.

**Важно:** Не все файловые системы поддерживают изменение раздела в режиме "online" без потери данных.

**Примечание:** Рекомендуется задать размер файловой системы меньше чем логического тома чтобы при уменьшении размера логического тома, случайно, не потерять данные в конце файловой системы.

## Добавить раздел к логической группе

Тип раздела должен быть 'Linux LVM'. Используйте, например, `cfdisk`. После этого нужно создать физический том на этом разделе и затем добавить его к логической группе:

```
# pvcreate /dev/sdb1
# vgextend VolGroup00 /dev/sdb1

```

**Tip:** К логической группе могут быть добавлены разделы с любого диска в вашей системе.

## Удаление раздела из логической группы

Перед удаление нужно переместить данные на другой раздел. LVM легко с этим справится:

```
# pvmove /dev/sdb1

```

Если вы хотите чтобы данные были перемещены на определённый физический том, передайте его в качестве второго аргумента командной строки:

```
# pvmove /dev/sdb1 /dev/sdf1

```

Если физический том должен быть удалён из группы томов:

```
# vgreduce myVg /dev/sdb1

```

Или удалите все пустые физические тома:

```
# vgreduce --all vg0

```

И наконец если вы хотите использовать раздел для чего-то другого и отвязать его от LVM совсем:

```
# pvremove /dev/sdb1

```

## Клонирование

#### Введение

LVM может создавать образ вашей системы по эффективно чем традиционные способы резервного копирования. Достигается это тем, что пока идёт создание клона при изменении исходного тома сначала начальная версия копируется в образ (англ. snapshot) и только потом изменяется. Начальный образ содержит только жёсткие ссылки(hard-links) к индексным дескриптором(inodes) ваших данных и использует их всё время пока данные не были изменены. Так система с размером в 35Гб может использовать только 2ГБ свободного места если в сумме в образе и в оригинале было изменено меньше 2ГБ.

#### Настрйка

Клон логического тома создаётся так-же как обычный том:

```
# lvcreate --size 100M --snapshot --name snap01 /dev/mapper/vg0-pv

```

На этом томе можно изменять менее 100Мб данных, после этого образ(snapshot) будет заполнен полностью)

*dm-snapshot* должен быть в переменной MODULES в `/etc/mkinitcpio.conf`, иначе система не загрузится

```
# mkinitcpio -g /boot/kernel26.img

```

Образы используются в первую очередь для создания замороженной копии файловой системы чтобы уже с неё делать резервную копию.

# Решение проблем

#### LVM команды не работают

*   Загрузите модуль ядра:

```
# modprobe dm-mod

```

*   Попробуйте использовать префикс *lvm*:

```
# lvm pvdisplay

```

#### Не видно логические тома

При установке на систему с уже существующей группой томов, вы можете не увидеть логические тома даже после "modprobe dm-mod".

В этом случае вам возможно прийдётся выполнить:

```
# vgchange -ay <volgroup>

```

# Ещё по теме

Другие статьи на Arch Wiki:

*   [Installing with software RAID or LVM_(Русский)](/index.php/Installing_with_Software_RAID_or_LVM "Installing with Software RAID or LVM")
*   [RAID encryption LVM_(Русский)](/index.php/RAID_Encryption_LVM "RAID Encryption LVM")

Внешние ссылки:

*   [LVM on wikipedia](https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux) "wikipedia:Logical Volume Manager (Linux)")
*   [LVM HOWTO on tldp.org](http://tldp.org/HOWTO/LVM-HOWTO/)
*   [LVM at en.gentoo-wiki.com](http://wiki.gentoo.org/wiki/LVM)